package Controlador;

import Modelo.Listas;
import Modelo.Rutas;
import Vista.JFrameRutas;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.text.SimpleDateFormat;


public class ControladorRutas implements ActionListener,KeyListener
{
    private JFrameRutas formRutas;
    private Listas listaRutas;

           public ControladorRutas(Listas lisRut) 
     {
        listaRutas = lisRut;
        formRutas = new JFrameRutas();
        formRutas.agregarListener(this, this);
        formRutas.setVisible(true);
        Enabled(false);
      
        
        formRutas.getTxtCodigoR().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                CodigoRKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) 
            {
               CodigoRkeyPressed(e);
            }
            
             

             
        });
        formRutas.getTxtDestinoR().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                DestinoRKeyTyped(e);
            }

            

             
            
             

             
        });
     }
    //----------------------------------------------
           private void Enabled(boolean Status) 
    {
        formRutas.getTxtCodigoR().setEnabled(!Status);
        formRutas.getTxtDestinoR().setEnabled(!Status);
        formRutas.getCmbEstadoR().setEnabled(!Status);
        formRutas.getCmbDescripcionR().setEnabled(!Status);
    }
    
           //Limpia el contenido de las cajas de texto
    //------------------------------------------
    private void Limpiar() {
        formRutas.getTxtCodigoR().setText("");
        formRutas.getTxtDestinoR().setText("");
        
    }

    

    //Ingresa una nueva ruta en la lista de choferes
    //------------------------------------------------
    private void Grabar() 
    {
        Rutas rutas = new Rutas();
        String Cadena;

        Cadena = formRutas.getTxtCodigoR().getText();
        if (Cadena.length() == 0) 
        {
            Mensajes.Aviso("Codigo Vacio", "");
            formRutas.getTxtCodigoR().requestFocusInWindow();
            return;
        }

        Cadena = formRutas.getTxtDestinoR().getText();
        if (Cadena.length() == 0) 
        {
            Mensajes.Aviso("Destino Vacio", "");
            formRutas.getTxtDestinoR().requestFocusInWindow();
            return;
        }
        
        Cadena =formRutas.getCmbDias().getSelectedItem().toString()+ " "+
                formRutas.getCmbHoras().getSelectedItem().toString()+ " "+
                formRutas.getCmbMinutos().getSelectedItem().toString();
        if(Cadena.equals("0 0 0"))
        {
            Mensajes.Aviso("Seleccione Duracion del recorrido","");
            return;
        }
        /*
        Cadena=(String) formRutas.getCmbDescripcionR().getSelectedItem();     //Revisar
                DescripcionR = Cadena.concat(DescripcionR);
        
        Cadena=(String) formRutas.getCmbEstadoR().getSelectedItem();
                Estado = Cadena.concat(Estado));
         */
        
        rutas.Rutas(formRutas.getTxtCodigoR().getText(),
                    formRutas.getCmbEstadoR().getSelectedItem().toString(),
                    formRutas.getCmbDescripcionR().getSelectedItem().toString(),
                    formRutas.getTxtDestinoR().getText(),
                    Cadena);
                

        listaRutas.getListaRutas().add(rutas);
        Mensajes.Aviso("Ruta guardado con exito", "");
        Limpiar();
        Enabled(false);
        formRutas.getTxtCodigoR().requestFocusInWindow();
        
        
        
    }
        private void CedulakeyPressed(KeyEvent e) 
     {
        if (e.getSource().equals(formRutas.getTxtCodigoR())) 
        {

            String Cadena;
            int PosiRut;
            Rutas rutas = new Rutas();
            Cadena = formRutas.getTxtCodigoR().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) 
            {
                Mensajes.Aviso("Codigo invalido", "");
                formRutas.getTxtCodigoR().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) 
            {

                PosiRut = ExisteRutas(Cadena);
                if (PosiRut >= 0) 
                {
                    rutas = listaRutas.getListaRutas().get(PosiRut);
                    formRutas.getCmbDescripcionR().setSelectedItem(rutas.getDescripcionR());
                    formRutas.getTxtDestinoR().setText(rutas.getDestino());
                    formRutas.getCmbEstadoR().setSelectedItem(rutas.getEstado());

                    Mensajes.Aviso("Ruta ya Existe", "");
                    Limpiar();

                } else 
                {
                    Enabled(true);
                    formRutas.getTxtDestinoR().requestFocusInWindow();

                }
            }

        }
    }
//---------------------------------------------------------
        public  int ExisteRutas(String CodR)
 {
   int i=0,Posi=-1;
   
   Rutas rts;
   String CodLista;

   for (i=0;i<listaRutas.getListaRutas().size();i++)
   {
     rts=listaRutas.getListaRutas().get(i);
     
     CodLista=rts.getCodigoR();
                  
     if (CodLista.equals(CodR)) 
       {  
         Posi=i;
         return Posi;
       }  
       
   }   
      
   return Posi;
}

    
//-------------------------------------------     
    @Override
    public void actionPerformed(ActionEvent e) 
     {
        if (e.getSource().equals(formRutas.getBtnBuscarR()))
      {
         new ControladorConsulRutas(listaRutas);  
      }
         if (e.getSource().equals(formRutas.getBtnSalirR())) 
         {
            formRutas.dispose();
        }
        if (e.getSource().equals(formRutas.getBtnGuardarR())) 
        {
            Grabar();
        }
        if (e.getSource().equals(formRutas.getBtnEliminarR())) {
            Limpiar();
            Enabled(false);
        }
    }

    @Override
    public void keyTyped(KeyEvent e) 
    {
        
    
    }

    @Override
    public void keyPressed(KeyEvent e) 
    {
        if (e.getSource().equals(formRutas.getTxtCodigoR())) 
        {
            CodigoRkeyPressed(e);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) 
    {
        
    }
//-------------------------------------------

    private void CodigoRKeyTyped(java.awt.event.KeyEvent evt) 
    {
        String Cadena;
        char Caracter;

        Cadena = formRutas.getTxtCodigoR().getText();
        if (Cadena.length() == 8) 
        {
            evt.consume();
        } else 
        {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') 
            {
                evt.consume();
            }

            
        }
    }
    private void CodigoRkeyPressed(KeyEvent e) 
    {
       if (e.VK_ENTER == e.getKeyCode()) 
        {
            formRutas.getTxtDestinoR().requestFocusInWindow();
        }          
    }

    private void DestinoRKeyTyped(java.awt.event.KeyEvent evt) 
    {
     String Cadena;
        String CarString;
        char Caracter;

        Cadena = formRutas.getTxtDestinoR().getText();
        if (Cadena.length() == 20) 
        {
            evt.consume();
        } else 
        {
            Caracter = evt.getKeyChar();

            CarString = Caracter + "";
            CarString = CarString.toUpperCase();
            Caracter = CarString.charAt(0);

            if (Caracter == ' ') 
            {
                return;
            }

            if (Caracter < 'A' || Caracter > 'Z') 
            {
                evt.consume();
            }

        }

   
    }
    
    
    
    
    
    
    
    
    
}